package com.lry.basic.algorithm.dp;

import java.util.Arrays;
//相邻房间不能同时偷
public class Rob {
    public static void main(String[] args) {

    }

    public static int rob(int[] nums) {
        if(null==nums||nums.length==0){
            return 0;
        }
        if(nums.length==1){
            return nums[0];
        }
        //dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i])
        int[] dp = new int[nums.length];

        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);

        for(int i=2;i<nums.length;i++){
            dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i]);
        }

        return dp[nums.length-1];
    }

    public  static int rob2(int[] nums) {
        if(null==nums||nums.length==0){
            return 0;
        }
        if(nums.length==1){
            return nums[0];
        }
        if(nums.length==2){
            return Math.max(nums[0],nums[1]);
        }
        return Math.max(myRob(Arrays.copyOfRange(nums, 0, nums.length - 1)),
                myRob(Arrays.copyOfRange(nums, 1, nums.length)));

    }

    public static int myRob(int[] nums){

        int[] dp = new int[nums.length];

        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);

        for(int i=2;i<nums.length;i++){
            dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i]);
        }

        return dp[nums.length-1];
    }
}
